package br.com.ads.sgse.managedBean;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import br.com.ads.dao.DAO;
import br.com.ads.dao.JPAUtil;
import br.com.ads.sgse.entity.Aluno;
import br.com.ads.sgse.entity.UnidadeFederacao;


@ManagedBean(name = "alunoBean")
@SessionScoped
public class AlunoBean implements Serializable {

	private static final long serialVersionUID = 1L;

	private Aluno aluno = new Aluno();
	private List<Aluno> alunos;
	private List<Aluno> alunoPesquisar;
	private DAO<Aluno> dao = new DAO<Aluno>(Aluno.class);
	private String nomeMae;
	private Date dataNascimento;
	private String nomeCompleto;
	private EntityManager em = new JPAUtil().getEntityManager();
	private UnidadeFederacao unidadefederacao = new UnidadeFederacao();
	//private DateConverter dataConversao;
	private String parameter;

	public String getParameter() {
		return parameter;
	}

	public void setParameter(String parameter) {
		this.parameter = parameter;
	}

	/** ACTIONS **/

	
	@SuppressWarnings("unused")
	@PostConstruct
	private void init() {
		
	}

	public String salvar() {
		try {
			

			if (aluno.getId() == null) {
				dao.adiciona(aluno);
			} else {
				dao.atualiza(aluno);
			}
			getAllAlunos();
			aluno = new Aluno();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public void remove() {
		try {
			dao.remove(aluno);
			getAllAlunos();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void getAllAlunos() {
		try {
			alunos = dao.listaTodos();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@SuppressWarnings("unchecked")
	public List<Aluno> getAlunosByNome() {
		Query q;
		alunos = null;
		try {
			if (!nomeCompleto.equals("")) {
				q = em.createQuery("SELECT p FROM Aluno p WHERE upper(p.nomeCompleto) like upper(:nomeCompleto)");
				q.setParameter("nomeCompleto", nomeCompleto + '%');
			}else {
				q = em.createQuery("SELECT p FROM Aluno p WHERE p.nomeMae=:nomeMae");
				q.setParameter("nomeMae", nomeMae);
			}
			
			alunos = q.getResultList();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return alunoPesquisar;

	}

	public Aluno getAluno() {
		return aluno;
	}

	public void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}

	public List<Aluno> getAlunos() {
		return alunos;
	}

	public void setAlunos(List<Aluno> alunos) {
		this.alunos = alunos;
	}

	public List<Aluno> getAlunoPesquisar() {
		return alunoPesquisar;
	}

	public void setAlunoPesquisar(List<Aluno> alunoPesquisar) {
		this.alunoPesquisar = alunoPesquisar;
	}

	public String getNomeMae() {
		return nomeMae;
	}

	public void setNomeMae(String nomeMae) {
		this.nomeMae = nomeMae;
	}

	public Date getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public String getNomeCompleto() {
		return nomeCompleto;
	}

	public void setNomeCompleto(String nomeCompleto) {
		this.nomeCompleto = nomeCompleto;
	}

	public UnidadeFederacao getUnidadefederacao() {
		return unidadefederacao;
	}

	public void setUnidadefederacao(UnidadeFederacao unidadefederacao) {
		this.unidadefederacao = unidadefederacao;
	}

	/** getters and setters **/



	


}
